#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct chararr
{

	int argc;
	char **argv;

} String;


/**
 *  *根据splitchar分割字符串
 *  把结果存储在String里面
 *   *
 *  */
static String *split(const char *str,const char splitChar);

int main(int argc,char **argv)
{


	
	int i;
	String *pr=split(*(argv+1),',');
	
	for(i=0;i<pr->argc;i++)
	{
		printf("--------");
		printf("%s\n",*((pr->argv)+i));
		fflush(stdin);
	}	


		
	return 0;

}

/**
 *根据splitchar分割字符串
把结果存储在String里面
 *
 */
static String *split(const char *str,const char splitChar)
{
	
	int  index=0,lastIndex=0,len;
	char *r1=NULL;
	const char *pHead=str;
	int argc=2;
	int argcIndex=0;
	char **argv=NULL;	
	char **swap=NULL;
	
	if(str==NULL)
	{
		return NULL;
	}

	argv=(char **)malloc(sizeof(char *)*argc);
	String *pr=(String *)malloc(sizeof(String));
	

	while(*str)
	{
	
		//如果到达末尾或者 跟分割字符串匹配就需要退出循环
		while((*str)&&(*str!=splitChar))
		{
			str++;
		}
		

		index=str-pHead;
		if(*str)
		{
			str++;
			
		}
			
		//计算上次索引到当前索引的偏移量
		len=index-lastIndex;

		if(argcIndex>=argc)
		{
			argc*=2;
			swap=argv;
			argv=(char **)realloc(swap,sizeof(char *)*argc);
		}
		
		r1=(char *)malloc(sizeof(char) * (len+1));

		*(argv+argcIndex++)=r1;
		strncpy(r1,pHead+lastIndex,len);
		*(r1+len)='\0';
		printf("%s\n",r1);
		lastIndex=index+1;//上次索引必须从当前索引的下一个位置开始
		
		
	}	

	pr->argc=argcIndex;
	pr->argv=argv;
	return pr;
}


